package htmlCanvas;

import context.*;

import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Image;


// ******************************************************************
// *** INNER CLASS: HtmlItem
// ******************************************************************
/**
* An HTML content layout item.
* Currently the only types supported
* are a run of text or an inline image. 
*
*/
public class HtmlItem implements Debug.Constants
{ //private static final boolean DEBUG=true; // Overriding Debug.Constants.DEBUG
	
  int xpos,ypos; // xpos,ypos = lower left corner
  public int getXpos() { return(xpos); }
  public int getYpos() { return(ypos); }
  
  private int lineNumber;
  private String text = "";
  private Font font;
  public Font getFont() { return(font); }
  private int color;
  public int getColor() { return(color); }
  private String link = null;
  private Image image;
  
  // ****************************************************************
  // *** CONSTRUCTOR: HtmlItem
  // ****************************************************************
  HtmlItem(int x,int y,Font font,int color,int lineNumber)
  { xpos = x;
    ypos = y;
    this.font=font;
    this.color=color;
    this.lineNumber=lineNumber;
//    if(DEBUG) Debug.println("new HtmlCanvas.HtmlItem: "+this);
  }

  // ****************************************************************
  // *** METHOD: getWidth
  // ****************************************************************
  public int getWidth()
  { if(image!=null) return(image.getWidth());
    return(font.stringWidth(text));
  }

  // ****************************************************************
  // *** METHOD: getHeight
  // ****************************************************************
  public int getHeight()
  { if(image!=null) return(image.getHeight());
    return(font.getHeight());
  }

  // ****************************************************************
  // *** METHOD: setText
  // ****************************************************************
  public void setText(String text)
  { this.text=text; }

  // ****************************************************************
  // *** METHOD: getText
  // ****************************************************************
  public String getText()
  { return(text); }

  // ****************************************************************
  // *** METHOD: setLineNumber
  // ****************************************************************
  public void setLineNumber(int lineNumber)
  { this.lineNumber=lineNumber; }

  // ****************************************************************
  // *** METHOD: getLineNumber
  // ****************************************************************
  public int getLineNumber()
  { return(lineNumber); }

  // ****************************************************************
  // *** METHOD: setImage
  // ****************************************************************
  public void setImage(Image image)
  { this.image=image; }

  // ****************************************************************
  // *** METHOD: getImage
  // ****************************************************************
  public Image getImage()
  { return(image); }
  
  // ****************************************************************
  // *** METHOD: isImage
  // ****************************************************************
  public boolean isImage()
  { return(image!=null);}

  // ****************************************************************
  // *** METHOD: setLink
  // ****************************************************************
  public void setLink(String link)
  { this.link=link; }

  // ****************************************************************
  // *** METHOD: getLink
  // ****************************************************************
  public String getLink()
  { return(link); }
  
  // ****************************************************************
  // *** METHOD: isLink
  // ****************************************************************
  public boolean isLink()
  { if(this.link==null) return(false);
    // Note: skip it if neigther text nor image
    if(this.image!=null) return(true);
    if(this.text!=null)
    { if(this.text.trim().length()>0) return(true); }
    return(false);
  }
  
  
  // ****************************************************************
  // *** METHOD: toString
  // ****************************************************************
  public String toString()
  { String type="Html";
    if(isLink()) { type="Link"; if(isImage()) type="ImageLink"; }
    else if(isImage()) type="Image";
    return(type+"Item[x="+xpos+",y="+ypos
                   +",width="+getWidth()
                   +",height="+getHeight()
//                   +",lineNumber="+lineNumber
//                   +",font="+font
                   +",isLink="+isLink()
                   +",link="+getLink()
                   +",image="+image
                   +",isImage="+isImage()
//                   +",color="+color
                   +",text="+getText()
                   +"]");
  }  
  
}

